import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Insecto 1 es eliminado mediante una descarga 
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Ins1 extends Plaga
{
    /**
     * Act - do whatever the Ins1 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    private int angulo;
   
   public Ins1(int a)
   {
      angulo=a; 
   }
   
   public Ins1()
   {
     angulo=52; 
   }
    public void act() 
    {
        move(5);
        giraAleatorio();
        rebota();
        if(encontroPelota())
        turn(11);
        if(encontroBart())
        turn(18);
        if(encontroEtiqueta())
        turn(42);
        //Detects when the bullet hits the ball. When it does, the action follows.
            Actor bullet=getOneIntersectingObject(Bullet.class);
        if(bullet!=null)
      {
         
          getWorld().removeObject(bullet);
          getWorld().removeObject(this);
          
        
        }
        
        
        
       
    } 
    
   
    
    /**
       Funciones  booleanas que detectan si se ha encontrado un insecto,de ser así regresa un true de lo contrario un false.
     */ 

    public boolean encontroInsecto1()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, Ins1.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    } 
    
    public boolean encontroInsecto2()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, Ins2.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    }
     public boolean encontroInsecto3()
    {
        Actor insecto = getOneObjectAtOffset(0, 0, Ins3.class);
        if(insecto != null) {
            return true;
        }
        else {
            return false;
        }
    } 
     /**
       Funciones  booleanas que detectan si se ha encontrado una etiqueta, o un obstáculo,de ser así regresa un true de lo contrario un false.
     */ 

      public boolean encontroEtiqueta()
    {
        Actor etiqueta=null;
        
        etiqueta=getOneIntersectingObject(Label.class);
         if (etiqueta!= null)
            return true;
        else
            return false;
    }
    public boolean encontroPelota()
    {
        Actor pelota=null;
        
        pelota=getOneIntersectingObject(Pelota.class); 
         if (pelota!= null)
            return true;
        else
            return false;
    }
    
    
    
     public boolean encontroBart()
    {
        Actor bart=null;
        
        bart=getOneIntersectingObject(Bart.class);
         if (bart!= null)
            return true;
        else
            return false;
    }
    /**
       Función que detecta si se ha llegado a los límites del escenario y gira al actor .
     */


    public void rebota()
    {
        int x=super.getX();
        int y=super.getY();
        
         
         //1.acceder al mundo con getWorld()
         World mundo=super.getWorld();
         //2. acceder al ancho del mundo con getWidth();
         int ancho=mundo.getWidth();
         //3.acceder al alto con getHeight();
         int alto=mundo.getHeight();
        
         if(x==ancho-1||x==0||y==alto-1||y==0)
         turn(1);
    
    }
    /**
       Función que gira al actor mediante la obtención de un número aleatorio.
     */
    public void giraAleatorio()
    {
      int aleatorio= Greenfoot.getRandomNumber(angulo*2+1)-angulo;
      super.turn(aleatorio);
    }
}

